<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="http://java.sun.com/jsp/jstl/myFn" prefix="myFn" %>
<html>
  <head>
  	<%@ include file="/jspf/public.jspf" %>
  	<link rel="stylesheet" type="text/css" href="${shop}/js/tree/jquery.treeview.css">
  	<script type="text/javascript" src="${shop}/js/tree/jquery.treeview.js"></script>
  	<script type="text/javascript">
  		$(function(){
  			$("#root").treeview();
  			// 给复选框注册单击事件
  			$("#root").find("input").click(function(){
  				//1: 当菜单(父)选中时,子菜单的状态要和父菜单相同
  				$(this).siblings("ul").find("input").attr("checked",this.checked);
  				//2: 当菜单(子),当选中时, 相应的父菜单也要被选中,当取消时,判断当前同级别的子菜单是否都已经取消,如果都取消则父菜单取消
  				if(this.checked){
  					//菜单选中时
  					$(this).parents("li").children("input").attr("checked",this.checked);
  				}else{
  					//菜单取消时,找到同级别的input,进行判断
  					/*if($(this).parents("ul:first").find("input[checked]").length==0){
  						$(this).parents("li").children("input").attr("checked",this.checked);
  					}*/
  					test(this);
  				}
  			});
  			// 传入当前要判断的复选框集合
			function test(chk){
				var id=$(chk).parents("ul:first").attr("id");
				// 判断同级别的复选框是否都为取消状态
				if($(chk).parents("ul:first").find("input:checked=true").length==0){
					// 获取当前复选框的父复选框(关键字在此,在把父复选框递归判断即可)
					chk=$(chk).parent().parents("li:first").children("input");
					chk.attr("checked",false);
					// 判断是否到了根选元素 ul id=root必须判断否则死循环
					if(id!="root")
						test(chk);
				}
			}
  		});
  	</script>
  </head>
  
  <body>&nbsp;      
  	 给角色授权(支持权限回显):<br /> 
  	 <form action="${shop}/role_updatePid.action" method="post">
  	 	  角色名称:${role.name}
  	 	  角色介绍:${role.detail}
  	 	 <hr />
  	 	 请授权:<br />
  	 	 <ul id="root">
		  	 <c:forEach items="${applicationScope.privilegeList}" var="privilege">
  	 	 		<!-- 显示父菜单 -->
		  		 <li>
		  	 	 <input type="checkbox" name="ids" value="${privilege.id}"  
		  	 	 	<c:if test="${myFn:contains(requestScope.myUrl,privilege.url)}">
		  	 	 		checked="checked"
		  	 	 	</c:if>
		  	 	 />${privilege.name}
		  	 		 <ul>
				  	 	 <c:forEach items="${privilege.childrenSet}" var="temp">
				  	 	 	<!-- 显示子菜单 -->
				  	 	 	<li>
					  	 	 	<input type="checkbox" name="ids" value="${temp.id}" 
					  	 	 		<c:if test="${myFn:contains(requestScope.myUrl,temp.url)}">
					  	 	 			checked="checked"
					  	 	 		</c:if>
					  	 	 	/>${temp.name}
					  	 	 	<!-- 测试功能是否支持递归
					  	 	 	<ul>
					  	 	 		<li>
					  	 	 			<input type="checkbox" value="demo" />测试一下
					  	 	 		</li>
					  	 	 		<li>
					  	 	 			<input type="checkbox" value="demo" />测试一下
					  	 	 		</li>
					  	 	 	</ul>
					  	 	 	 -->
				  	 	 	 </li>
				  	 	 	 <!-- 显示子菜单结束 -->
				  	 	 </c:forEach>
		  	 	  	</ul>
		  	 	 </li>
		  	 	 <!-- 显示父菜单结束 -->
		  	 </c:forEach>
	  	 </ul>
  	 	 <input type="submit" value="提交" />
  	 	 <input type="hidden" value="${role.id}" name="id" />
  	 </form>
  </body>
</html>
